package com.zsrt.designmodel.ch04.demo01;


/**
 * 
 * 模拟调用者  客户
 * 为创建对象提供过渡接口，以便将创建对象的具体过程屏蔽隔离起来，达到提高灵活性的目的。
 * @author zsrt
 * 
 * 优点：作为使用者Mashibing 不需要自己去做一把手枪  不需要了解手枪是如何做出来的。只需要向工厂申请就行。
 * 
 * 工厂方法把创建对象延迟 到子类。时机上做了改变。
 * 
 * 工厂方法使用于 系统不希望用户自己直接使用new来创建。而是应当由工厂来统一创建。否则用户必须要清楚直到枪是怎么创建的才行。
 * 
 * 使用用用户不应该活着无法使用new来创建对象
 * 
 * 缺点：工厂表示很忙。来一种型号的枪 需要工厂类 修改自己的方法...
 *
 */
public class Mashibing {
	
	public static void main(String[] args) {
		
		//当士兵说要一把枪的时候。不能自己去造一把枪 而是应该向兵工厂申请一把枪
		Gun  gun  = BingFactory.createGun(/*"47"*/GunEnum.AK47);
		//Gun  gun  = BingFactory.createGun(/*"56"*/GunEnum.C56);
		
		gun.fire();
	}

}
